सी स्विच स्टेटमेंट

C में स्विच स्टेटमेंट IF-ELSE-IF LADDER स्टेटमेंट के लिए एक वैकल्पिक है जो हमें स्विच वैरिएबल नामक एकल वैरिएबल के विभिन्न Possibles मानों के लिए कई संचालन को निष्पादित करने की अनुमति देता है। यहां, हम एक एकल चर के विभिन्न मूल्यों के लिए कई मामलों में विभिन्न कथनों को परिभाषित कर सकते हैं।

कैसे लिखें

cayana(ABaivyaKtai){
sYaitaiF maanaR1:
//kaed kae haenaa naiSpaaDita;
vairmatau; //vaIklpaik
sYaitaiF maanaR2:
//kaed kae haenaa naiSpaaDita;
vairmatau; //vaIklpaik
......

galataiRkrnaa:
kaed kae haenaa naiSpaaDita yaDi saBai maamalaaeM hIM nahiM mailaana;
}

सी भाषा में स्विच विवरण के लिए नियम

स्विच अभिव्यक्ति एक पूर्णांक या चरित्र प्रकार की होनी चाहिए। केस वैल्यू एक पूर्णांक या चरित्र स्थिर होना चाहिए। केस वैल्यू का उपयोग केवल स्विच स्टेटमेंट के अंदर किया जा सकता है। स्विच मामले में ब्रेक स्टेटमेंट नहीं होना चाहिए। यह वैकल्पिक है। यदि मामले में कोई ब्रेक स्टेटमेंट नहीं मिला है, तो सभी मामलों को मैच किए गए मामले के बाद वर्तमान में निष्पादित किया जाएगा। इसे सी स्विच स्टेटमेंट की स्थिति के माध्यम से गिरावट के रूप में जाना जाता है।

आइए इसे उदाहरणों द्वारा समझने की कोशिश करें। हम मान रहे हैं कि निम्नलिखित चर हैं।

paunaZ PKsa,la,jaed;
AxarF P,bai;
ApaunaZ Ppaf;

वैध स्विच अमान्य स्विच वैध मामला अमान्य मामला स्विच (एक्स) स्विच (एफ) केस 3; केस 2.5; स्विच (x> y) स्विच (x+2.5) केस 'a'; केस एक्स; स्विच (ए+बी -2) केस 1+2; केस x+2; स्विच (func (x, y)) केस 'x'> 'y'; मामला 1,2,3;

स्विच केस स्टेटमेंट का काम करना

सबसे पहले, स्विच स्टेटमेंट में निर्दिष्ट पूर्णांक अभिव्यक्ति का मूल्यांकन किया जाता है। इस मान को अलग -अलग मामलों में दिए गए निरंतर मूल्यों के साथ एक -एक करके मिलान किया जाता है। यदि कोई मैच पाया जाता है, तो उस मामले में निर्दिष्ट सभी कथनों को उस मामले के बाद मौजूद सभी मामलों के साथ निष्पादित किया जाता है, जिसमें डिफ़ॉल्ट विवरण भी शामिल है। किसी भी दो मामलों में समान मूल्य नहीं हो सकते। यदि मिलान किए गए मामले में एक ब्रेक स्टेटमेंट होता है, तो उसके बाद मौजूद सभी मामलों को छोड़ दिया जाएगा, और नियंत्रण स्विच से बाहर आता है। अन्यथा, मिलान किए गए मामले के बाद के सभी मामलों को निष्पादित किया जाएगा।

C स्विच स्टेटमेंट कैसे काम करता है?

चलो कदम-दर-चरण प्रक्रिया के माध्यम से चलते हैं कि स्विच स्टेटमेंट C में कैसे काम करता है: निम्नलिखित स्विच कथन पर विचार करें:

उदाहरण

#samaahitaF <PsaTidiAayaAae.Pca>

paunaZ mauqyaF() {
paunaZ AMkitaRkrnaa = 2;
cayana (AMkitaRkrnaa) {
sYaitaiF 1:
mauDznama("kimata hI 1\n");
vairmatau;
sYaitaiF 2:
mauDznama("kimata hI 2\n");
vairmatau;
sYaitaiF 3:
mauDznama("kimata hI 3\n");
vairmatau;
galataiRkrnaa:
mauDznama("kimata hI nahiM 1, 2, yaa 3\n");
vairmatau;
}

naivaZtanama 0;
}

आउटपुट

kimata hI 2

चरण-दर-चरण प्रक्रिया:

स्विच चर संख्या का मूल्यांकन किया जाता है। इस मामले में, NUM को मान 2 के साथ आरंभीकृत किया गया है। मूल्यांकन किए गए NUM (2) मान की तुलना स्विच ब्लॉक के अंदर प्रत्येक केस लेबल में निर्दिष्ट स्थिरांक के साथ की जाती है। स्विच स्टेटमेंट दूसरे मामले (केस 2) में निर्दिष्ट निरंतर के साथ मूल्यांकन किए गए मूल्य (2) से मेल खाता है। चूंकि एक मैच है, इसलिए कार्यक्रम मिलान के मामले (केस 2) से जुड़े कोड ब्लॉक में कूदता है। केस 2 से जुड़े कोड ब्लॉक को निष्पादित किया जाता है, जो कंसोल के लिए "मान 2" प्रिंट करता है। "ब्रेक" कीवर्ड केस 2 के कोड ब्लॉक में मौजूद है। परिणामस्वरूप, प्रोग्राम कोड ब्लॉक को निष्पादित करने के तुरंत बाद स्विच स्टेटमेंट से बाहर हो जाता है। स्विच स्टेटमेंट के बाद प्रोग्राम कंट्रोल जारी रहता है, और स्विच स्टेटमेंट के बाद किसी भी स्टेटमेंट को निष्पादित किया जाता है। इस मामले में, स्विच के बाद कोई बयान नहीं हैं, इसलिए कार्यक्रम समाप्त हो जाता है। स्विच स्टेटमेंट ने चर संख्या के मान का मूल्यांकन किया, केस 2 के साथ एक मैच पाया, इसी कोड ब्लॉक को निष्पादित किया, और फिर "ब्रेक" स्टेटमेंट की उपस्थिति के कारण स्विच ब्लॉक से बाहर निकाला।

सी में एक स्विच कथन का उदाहरण

उदाहरण

#samaahitaF<PsaTidiAayaAae.Pca>
paunaZ mauqyaF(){
paunaZ saMqyaa=0;
mauDznama("pzavaeSa krnaa a saMqyaa:");
saMgazhitaF("%paunaZ",&saMqyaa);
cayana(saMqyaa){
sYaitaiF 10:
mauDznama("saMqyaa hI ke barabar haetai hI kae 10");
vairmatau;
sYaitaiF 50:
mauDznama("saMqyaa hI barabar kae 50");
vairmatau;
sYaitaiF 100:
mauDznama("saMqyaa hI barabar kae 100");
vairmatau;
galataiRkrnaa:
mauDznama("saMqyaa hI nahiM barabar kae 10, 50 yaa 100");
}
naivaZtanama 0;
}

आउटपुट

pzavaeSaRkrnaa P saMqyaa:4
saMqyaa hI nahiM barabar kae 10, 50 yaa 100

pzavaeSaRkrnaa P saMqyaa:50
saMqyaa hI barabar kae 50

स्विच केस उदाहरण 2

#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF()
{
paunaZ PKsa = 10, la = 5;
cayana(PKsa>la && PKsa+la>0)
{
sYaitaiF 1:
mauDznama("namastae");
vairmatau;
sYaitaiF 0:
mauDznama("AlavaiDa");
vairmatau;
galataiRkrnaa:
mauDznama(" namastae AlavaiDa ");
}

}

आउटपुट

namastae

स्विच स्टेटमेंट में ब्रेक और डिफ़ॉल्ट कीवर्ड

आइए हम उदाहरण कोड और आउटपुट के साथ स्विच स्टेटमेंट के संदर्भ में "ब्रेक" और "डिफ़ॉल्ट" कीवर्ड को समझाएं और परिभाषित करें।

1। कीवर्ड को तोड़ें:

समय से पहले स्विच स्टेटमेंट को समाप्त करने के लिए प्रत्येक मामले के कोड ब्लॉक के भीतर "ब्रेक" कीवर्ड का उपयोग किया जाता है। जब कार्यक्रम एक केस ब्लॉक के अंदर "ब्रेक" स्टेटमेंट का सामना करता है, तो यह तुरंत स्विच स्टेटमेंट से बाहर निकलता है, जिससे बाद के केस ब्लॉक के निष्पादन को रोका जाता है। स्विच स्टेटमेंट के "फॉल-थ्रू" व्यवहार से बचने के लिए "ब्रेक" स्टेटमेंट महत्वपूर्ण है।

उदाहरण

#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF() {
paunaZ AMkitaRkrnaa = 3;

cayana (AMkitaRkrnaa) {
sYaitaiF 1:
mauDznama("kimata hI 1\n");
vairmatau; // baahrRnaiklanaa cayana kYana baaD kziyaanvaita yah sYaitaiF AvaraeoaRpaIDaRkrnaa
sYaitaiF 2:
mauDznama("kimata hI 2\n");
vairmatau; // baahrRnaiklanaa cayana kYana baaD kziyaanvaita yah sYaitaiF AvaraeoaRpaIDaRkrnaa
sYaitaiF 3:
mauDznama("kimata hI 3\n");
vairmatau; // baahrRnaiklanaa cayana kYana baaD kziyaanvaita yah sYaitaiF AvaraeoaRpaIDaRkrnaa
galataiRkrnaa:
mauDznama("kimata hI nahiM 1, 2, yaa 3\n");
vairmatau; // baahrRnaiklanaa cayana kYana baaD kziyaanvaita galataiRkrnaa sYaitaiF AvaraeoaRpaIDaRkrnaa
}

naivaZtanama 0;
}

आउटपुट

kimata hI 3

स्पष्टीकरण:

इस उदाहरण में, स्विच स्टेटमेंट वेरिएबल न्यूम (जो 3 है) के मान का मूल्यांकन करता है और इसे केस 3 से मेल खाता है। केस 3 से जुड़े कोड ब्लॉक को निष्पादित किया जाता है, कंसोल के लिए "मान 3" छापा जाता है। केस 3 के भीतर "ब्रेक" बयान यह सुनिश्चित करता है कि कार्यक्रम इस केस ब्लॉक को निष्पादित करने के तुरंत बाद स्विच स्टेटमेंट से बाहर निकलता है, जिससे किसी भी अन्य मामलों के निष्पादन को रोका जा सके।

2। डिफ़ॉल्ट कीवर्ड:

जब कोई भी मामला स्थिरांक मूल्यांकन की गई अभिव्यक्ति से मेल खाता है, तो यह एक कैच-ऑल केस के रूप में संचालित होता है। यदि कोई मिलान मामला मौजूद नहीं है और "डिफ़ॉल्ट" मामला मौजूद है, तो "डिफ़ॉल्ट" मामले से जुड़ा कोड ब्लॉक चलाया जाता है। इसका उपयोग अक्सर उन परिस्थितियों को संभालने के लिए किया जाता है जहां कोई भी घोषित परिस्थितियां प्रदान की गई इनपुट पर लागू नहीं होती हैं।

उदाहरण

#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF() {
paunaZ AMkitaRkrnaa = 5;

cayana (AMkitaRkrnaa) {
sYaitaiF 1:
mauDznama("kimata hI 1\n");
vairmatau;
sYaitaiF 2:
mauDznama("kimata hI 2\n");
vairmatau;
sYaitaiF 3:
mauDznama("kimata hI 3\n");
vairmatau;
galataiRkrnaa:
mauDznama("kimata hI nahiM 1, 2, yaa 3\n");
vairmatau; // baahrRnaiklanaa cayana kYana baaD kziyaanvaita galataiRkrnaa sYaitaiF AvaraeoaRpaIDaRkrnaa
}

naivaZtanama 0;
}

आउटपुट

kimata hI nahiM 1, 2, yaa 3

स्पष्टीकरण:

इस उदाहरण में, स्विच स्टेटमेंट वैरिएबल न्यूम (जो 5 है) के मान की जांच करता है। क्योंकि कोई भी मामला संख्या से मेल नहीं खाता है, प्रोग्राम "डिफ़ॉल्ट" मामले से जुड़े कोड ब्लॉक को करता है। "डिफ़ॉल्ट" मामले के अंदर "ब्रेक" स्टेटमेंट यह सुनिश्चित करता है कि प्रोग्राम "डिफ़ॉल्ट" केस ब्लॉक को निष्पादित करने के बाद स्विच स्टेटमेंट से बाहर निकलता है। "ब्रेक" और "डिफ़ॉल्ट" दोनों कीवर्ड एक स्विच स्टेटमेंट के भीतर निष्पादन के प्रवाह को नियंत्रित करने में आवश्यक भूमिका निभाते हैं। "ब्रेक" स्टेटमेंट गिरावट के माध्यम से व्यवहार को रोकने में मदद करता है, जबकि "डिफ़ॉल्ट" मामला बेजोड़ मामलों को संभालने का एक तरीका प्रदान करता है।

#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF() {
paunaZ AMkitaRkrnaa = 5;

cayana (AMkitaRkrnaa) {
sYaitaiF 1:
mauDznama("kimata hI 1\n");
vairmatau;
sYaitaiF 2:
mauDznama("kimata hI 2\n");
vairmatau;
sYaitaiF 3:
mauDznama("kimata hI 3\n");
vairmatau;
galataiRkrnaa:
mauDznama("kimata hI nahiM 1, 2, yaa 3\n");
vairmatau; // baahrRnaiklanaa cayana kYana baaD kziyaanvaita galataiRkrnaa sYaitaiF AvaraeoaRpaIDaRkrnaa
}

naivaZtanama 0;
}

आउटपुट

kimata hI nahiM 1, 2, yaa 3

स्पष्टीकरण:

इस उदाहरण में, स्विच स्टेटमेंट वैरिएबल न्यूम (जो 5 है) के मान की जांच करता है। क्योंकि कोई भी मामला संख्या से मेल नहीं खाता है, प्रोग्राम "डिफ़ॉल्ट" मामले से जुड़े कोड ब्लॉक को करता है। "डिफ़ॉल्ट" मामले के अंदर "ब्रेक" स्टेटमेंट यह सुनिश्चित करता है कि प्रोग्राम "डिफ़ॉल्ट" केस ब्लॉक को निष्पादित करने के बाद स्विच स्टेटमेंट से बाहर निकलता है। "ब्रेक" और "डिफ़ॉल्ट" दोनों कीवर्ड एक स्विच स्टेटमेंट के भीतर निष्पादन के प्रवाह को नियंत्रित करने में आवश्यक भूमिका निभाते हैं। "ब्रेक" स्टेटमेंट गिरावट के माध्यम से व्यवहार को रोकने में मदद करता है, जबकि "डिफ़ॉल्ट" मामला बेजोड़ मामलों को संभालने का एक तरीका प्रदान करता है।

C स्विच स्टेटमेंट फॉल-थ्रू है

सी भाषा में, स्विच स्टेटमेंट के माध्यम से गिर जाता है; इसका मतलब है कि यदि आप स्विच मामले में ब्रेक स्टेटमेंट का उपयोग नहीं करते हैं, तो मिलान मामले के बाद सभी मामलों को निष्पादित किया जाएगा। आइए नीचे दिए गए उदाहरण द्वारा स्विच स्टेटमेंट की स्थिति के माध्यम से गिरावट को समझने का प्रयास करें।

उदाहरण

#samaahitaF<PsaTidiAayaAae.Pca>
paunaZ mauqyaF(){
paunaZ saMqyaa=0;

mauDznama("pzavaeSa krnaa a saMqyaa:");
saMgazhitaF("%paunaZ",&saMqyaa);

cayana(saMqyaa){
sYaitaiF 10:
mauDznama("saMqyaa hI barabar kae 10\n");
sYaitaiF 50:
mauDznama("saMqyaa hI barabar kae 50\n");
sYaitaiF 100:
mauDznama("saMqyaa hI barabar kae 100\n");
galataiRkrnaa:
mauDznama("saMqyaa hI nahiM barabar kae 10, 50 yaa 100");
}
naivaZtanama 0;
}

आउटपुट

pzavaeSaRkrnaa P saMqyaa:10
saMqyaa hI barabar kae 10
saMqyaa hI barabar kae 50
saMqyaa hI barabar kae 100
saMqyaa hI nahiM barabar kae 10, 50 yaa 100

आउटपुट

pzavaeSaRkrnaa P saMqyaa:50
saMqyaa hI barabar kae 50
saMqyaa hI barabar kae 100
saMqyaa hI nahiM barabar kae 10, 50 yaa 100

नेस्टेड स्विच केस स्टेटमेंट

हम एक स्विच स्टेटमेंट के अंदर के रूप में कई स्विच स्टेटमेंट का उपयोग कर सकते हैं। इस प्रकार के बयानों को नेस्टेड स्विच केस स्टेटमेंट कहा जाता है। निम्नलिखित उदाहरण पर विचार करें।

उदाहरण

#samaahitaF <PsaTidiAayaAae.Pca>
paunaZ mauqyaF () {

paunaZ maIM = 10;
paunaZ jae = 20;

cayana(maIM) {

sYaitaiF 10:
mauDznama(" kimata ka i ka maulyaaMkna maeM AaUTr baDlanaa: %paunaZ\n",maIM);
sYaitaiF 20:
cayana(jae) {
sYaitaiF 20:
mauDznama(" kimata ka j ka maulyaaMkna maeM naesT baDlanaa: %paunaZ\n",jae);
}
}

mauDznama("PkDma sahi kimata ka i hI : %paunaZ\n", maIM );
mauDznama("PkDma sahi kimata ka j hI : %paunaZ\n", jae );

naivaZtanama 0;
}

आउटपुट

kimata ka maIM kaRmaulyaaMkna maeM AaUTr cayana: 10
kimata ka jae kaRmaulyaaMkna maeM naesT cayana: 20
PkDmaRsahi kimata ka maIM hI : 10
PkDmaRsahi kimata ka jae hI : 20

स्विच स्टेटमेंट के लाभ:

सी में स्विच स्टेटमेंट के कई फायदे हैं। स्विच स्टेटमेंट के कुछ मुख्य लाभ इस प्रकार हैं: पठनीयता और स्पष्टता: स्विच स्टेटमेंट कोड में मल्टीवे ब्रांचिंग को व्यक्त करने के लिए एक संक्षिप्त और सीधा तरीका प्रदान करता है। कई मामलों से निपटने से कोड को अधिक संगठित और आसान बना सकते हैं, जो कई नेस्टेड इफ-इफिस स्टेटमेंट की तुलना में पढ़ने में आसान हो सकते हैं। दक्षता: स्विच स्टेटमेंट आमतौर पर कई स्थितियों से निपटने के दौरान IF-ELSE स्टेटमेंट की एक श्रृंखला की तुलना में अधिक कुशल होता है। यह एक प्रत्यक्ष जंप टेबल के रूप में काम करता है, जो निष्पादन समय के मामले में इसे तेज और अधिक अनुकूलित करता है। केस-आधारित लॉजिक: स्विच स्टेटमेंट स्वाभाविक रूप से उन परिदृश्यों को फिट करता है जहां कार्यक्रम को एकल चर के विशिष्ट मूल्यों के आधार पर निर्णय लेने की आवश्यकता होती है। यह केस-आधारित तर्क को लागू करने का एक सहज और सीधा तरीका है। स्विच स्टेटमेंट एक डिफ़ॉल्ट मामले का उपयोग करके समर्थन करता है जो उन मानों के लिए कैच-ऑल विकल्प के रूप में कार्य करता है जो किसी भी प्रदान किए गए मामलों से मेल नहीं खाते हैं। यह डिफ़ॉल्ट मामला असामान्य इनपुट या परिस्थितियों को संभालता है जो स्पष्ट रूप से नहीं बताए गए हैं।

स्विच स्टेटमेंट के नुकसान:

सी में स्विच स्टेटमेंट के कई नुकसान हैं। स्विच स्टेटमेंट के कुछ मुख्य नुकसान इस प्रकार हैं: सीमित अभिव्यक्ति: स्विच स्टेटमेंट में उपयोग की जाने वाली अभिव्यक्ति के परिणामस्वरूप एक अभिन्न मान (AxarF, paunaZ, saucaiF) या एक संगत डेटा प्रकार होना चाहिए। यह कुछ परिदृश्यों में इसके लचीलेपन को सीमित करते हुए, अधिक जटिल या गैर-निरंतर अभिव्यक्तियों को संभाल नहीं सकता है। रेंज की तुलना करने में असमर्थता: यदि-इल-स्टेटमेंट्स के विपरीत, स्विच स्टेटमेंट सीधे मानों की सीमाओं को संभाल नहीं सकता है। स्विच स्टेटमेंट में प्रत्येक मामला एक विशिष्ट निरंतर मूल्य का प्रतिनिधित्व करता है, जो कुशलतापूर्वक मानों की एक श्रृंखला को संभालने के लिए चुनौतीपूर्ण बनाता है। फ्लोटिंग-पॉइंट नंबरों के लिए कोई समर्थन नहीं: स्विच स्टेटमेंट केवल इंटीग्रल प्रकार (पूर्णांक) और एनम से मान स्वीकार करता है; यह फ्लोटिंग-पॉइंट नंबरों को स्वीकार नहीं करता है। यह फ्लोटिंग-पॉइंट पूर्णांक जैसे गैर-अभिन्न डेटा प्रकारों को नहीं संभालता है, जो कुछ परिस्थितियों में समस्याग्रस्त हो सकता है। फॉल-थ्रू बिहेवियर: स्विच स्टेटमेंट में डिफ़ॉल्ट रूप से "फॉल-थ्रू" व्यवहार होता है, जिसका अर्थ है कि यदि कोई मामला "ब्रेक" स्टेटमेंट शामिल नहीं करता है, तो निष्पादन निम्नलिखित मामले ब्लॉक के लिए "गिर जाएगा"। यदि उचित रूप से प्रबंधित नहीं किया जाता है, तो इससे अवांछित व्यवहार हो सकता है। डुप्लिकेट कोड: स्विच स्टेटमेंट का उपयोग करने से कुछ परिस्थितियों में डुप्लिकेट कोड हो सकता है, खासकर जब कई मामले समान कार्यों की मांग करते हैं। यदि ठीक से प्रबंधित नहीं किया जाता है, तो इसके परिणामस्वरूप कोड दोहराव हो सकता है। नेस्टेड स्विच जटिल हो सकते हैं: जब नेस्टेड स्विच स्टेटमेंट से निपटते हैं, तो कोड जटिल और कम पठनीय हो सकता है। इस तरह के नेस्टेड संरचनाओं को समझने और बनाए रखने के लिए अतिरिक्त प्रयास की आवश्यकता हो सकती है।

◀ पीछे अगला ▶